package client_commands;

import java.util.StringTokenizer;

import parameters.RLM_Parameters;

import client.ClientApplication;

/**
 * Komanda koja procesira validan odgovor na multicast poruku.
 * Kao prametar komande SET_SERVER_INFO prima se IP adresa i port RLM servera.
 * - Ovi parametri se parsiraju i setuju za objekat aplikacije.
 * - Stopira se multicast mehanizam (thread), jer je primljen odbovor na multicast poruku,
 *   pa vise nije potrebno upucivati druge multicast poruke.
 * - Oslobadja se multicast semafor, kako bi se nastavlio izvrsavanje
 *   createSocketConnection() metode.
 * 
 * @see ClientApplication#createSocketConnection()
 * 
 * @author UrosKrkic & Radivoje Popovic
 */
public class SET_SERVER_INFOCommand extends Command {

	
	public SET_SERVER_INFOCommand(String parameter) {
		setCode(SET_SERVER_INFO);
		setParameter(parameter);
	}
	
	
	@Override
	public boolean executeCommand(ClientApplication theApp) {
		
		StringTokenizer tokens = new StringTokenizer(getParameter(), ":");
		
		String serverIP = tokens.nextToken();
		int port = Integer.parseInt(tokens.nextToken());
		
		RLM_Parameters.setServerName(serverIP);
		RLM_Parameters.setServerPort(port);
		
		theApp.stopMulticasting();
		
		ClientApplication.multicastPrecednceSemaphore.release();

		return true;
	}
	
}
